﻿using System;
using System.Collections.Generic;
using DimOS.DimSH;
using DimOS.Internals;
using DimOS.Modules;

namespace DimOS.Constants
{
    public static class Commands
    {
        public static List<List<Command>> List = new List<List<Command>>
        {
            new List<Command>{
                new Command("dim", new []{"d"}, CommandEvaluator.Dim, Descriptions.Dim, Manuals.Dim),
                new Command("set", new []{"s"}, CommandEvaluator.Set, Descriptions.Set, Manuals.Set),
                new Command("get", new []{"g"}, CommandEvaluator.Get, Descriptions.Get, Manuals.Get),
                new Command("cls", new []{"c"}, CommandEvaluator.Cls, Descriptions.Cls, Manuals.Cls)
            },

            new List<Command>
            {
                new Command("alias",      new []{"a", "al", "als"}, CommandEvaluator.Alias, Descriptions.Alias, Manuals.Alias),
                new Command("beep",       new []{"b", "bp"}, CommandEvaluator.Beep, Descriptions.Beep, Manuals.Beep),
                new Command("copy",       new []{"c", "cp"}, CommandEvaluator.Copy, Descriptions.Copy, Manuals.Copy),
                new Command("directory",  new []{"d", "dr", "dir"}, CommandEvaluator.Directory, Descriptions.Directory, Manuals.Directory),
                new Command("explain",    new []{"e", "ex", "expl"}, CommandEvaluator.Explain, Descriptions.Explain, Manuals.Explain),
                new Command("function",   new []{"f", "fn", "func"}, CommandEvaluator.Function, Descriptions.Function, Manuals.Function),
                new Command("gui",        new []{"g", "gu", "gui"}, CommandEvaluator.Gui, Descriptions.Gui, Manuals.Gui),
                new Command("help",       new []{"h", "hp", "hlp"}, CommandEvaluator.Help, Descriptions.Help, Manuals.Help),
                new Command("internal",   new []{"i", "in", "int"}, CommandEvaluator.Internal, Descriptions.Internal, Manuals.Internal),
                new Command("journal",    new []{"j", "jr", "jrnl"}, CommandEvaluator.Journal, Descriptions.Journal, Manuals.Journal),
                new Command("keymap",     new []{"k", "km", "kmap"}, CommandEvaluator.Keymap, Descriptions.Keymap, Manuals.Keymap),
                new Command("list",       new []{"l", "ls", "lst"}, CommandEvaluator.List, Descriptions.List, Manuals.List),
                new Command("move",       new []{"m", "mv", "mov"}, CommandEvaluator.Move, Descriptions.Move, Manuals.Move),
                new Command("new",        new []{"n", "nw"}, CommandEvaluator.New, Descriptions.New, Manuals.New),
                new Command("open",       new []{"o", "op", "opn"}, CommandEvaluator.Open, Descriptions.Open, Manuals.Open),
                new Command("permission", new []{"p", "pm", "perm"}, CommandEvaluator.Permission, Descriptions.Permission, Manuals.Permission),
                new Command("query",      new []{"q", "qr", "qry"}, CommandEvaluator.Query, Descriptions.Query, Manuals.Query),
                new Command("remove",     new []{"r", "rm", "rmv"}, CommandEvaluator.Remove, Descriptions.Remove, Manuals.Remove),
                new Command("search",     new []{"s", "sr", "srch"}, CommandEvaluator.Search, Descriptions.Search, Manuals.Search),
                new Command("topic",      new []{"t", "tp", "tpc"}, CommandEvaluator.Topic, Descriptions.Topic, Manuals.Topic),
                new Command("user",       new []{"u", "us", "usr"}, CommandEvaluator.User, Descriptions.User, Manuals.User),
                new Command("variable",   new []{"v", "vr", "var"}, CommandEvaluator.Variable, Descriptions.Variable, Manuals.Variable),
                new Command("workbook",   new []{"w", "wb", "wbk"}, CommandEvaluator.Workbook, Descriptions.Workbook, Manuals.Workbook),
                new Command("xor",        new []{"x", "xr"}, CommandEvaluator.Xor, Descriptions.Xor, Manuals.Xor),
                new Command("yawn",       new []{"y", "yw", "ywn"}, CommandEvaluator.Yawn, Descriptions.Yawn, Manuals.Yawn),
                new Command("zone",       new []{"z", "zn"}, CommandEvaluator.Zone, Descriptions.Zone, Manuals.Zone),
            }
        }; 
    }
}
